#include <iostream>
using namespace std;

// class Date
// {
// public:
//     //成员函数的地址不在对象中
//     //成员变量是存在对象中
//     void init(int year,int month,int day)
//     {
//         _year = year;
//         _month = month;
//         _day = day;
//     }
//     //this指针不能显示的写实参和形参
//     //但是可以在类里面显示的使用
//     //void print(Date* const this)//不能显示的写this形参
//     void print()
//     {
//         // cout << this->_year << '-' ;
//         // cout << this->_month << '-';
//         // cout << this->_day <<endl;
//         cout << this << endl;
//         cout << _year << '-' ;
//         cout << _month << '-';
//         cout << _day <<endl;
//     }

// private:
//     int _year;
//     int _month;
//     int _day;
// };

// //面试题
// //1.this指针存在哪里？  this指针是一个形参，它存在栈帧上的  在vs里，存到ecx寄存器里
// //

// int main()
// {
//     Date d1;
//     d1.init(2012,11,30);
//     d1.print();
//     Date d2;
//     d2.init(2013,12,7);
//     d2.print();
//     return 0;  
// }


// class Date
// {
// public:
//     //构成重载，但是有二义性
//     // Date()
//     // {
//     //     _year = 1;
//     //     _month = 1;
//     //     _day = 1;
//     // }

//     Date(int year = 1, int month = 1, int day = 1)
//     {
//         _year = year;
//         _month = month;
//         _day = day;
//     }

//     // void init(int year,int month,int day)
//     // {
//     //     _year = year;
//     //     _month = month;
//     //     _day = day;
//     // }

//     void print()
//     {
//         cout << _year << '-' ;
//         cout << _month << '-';
//         cout << _day <<endl;
//     }
// private:
//     int _year = 1;  
//     int _month = 1;
//     int _day = 1;
// };

// int main()
// {
//     Date d1;
//     d1.print();

//     Date d2(2023,11,11);
//     d2.print();

//     return 0;
// }

class Date
{
public:
    Date(int year = 1, int month = 1, int day = 1)
    {
        cout << " Date(int year = 1, int month = 1, int day = 1)" << endl;
        _year = year;
        _month = month;
        _day = day;
    }

    void print()
    {
        cout << _year << '-' ;
        cout << _month << '-';
        cout << _day <<endl;
    } 

    ~Date()
    {
        cout << " ~Date() " << endl;
    }
private:
    int _year = 1;  
    int _month = 1;
    int _day = 1;
};

int main()
{
    Date d1;
    d1.print();

    Date d2(2023,11,11);
    d2.print();

    return 0;
}
